<!-- 

	General Network Preferences
	Copyright (C) 2010-2015 Ian Moore (imoore76 at yahoo dot com)
	
	$Id: settingsGlobalNetwork.html 597 2015-04-20 11:41:28Z imoore76 $

 -->
<ul>
	<li><a href="#vboxGlobalNATNetworks"><span class='translate'>NAT Networks</span></a>
	<li><a href="#vboxGlobalHostNetworking"><span class='translate'>Host-only Networks</span></a>
</ul>
<div id='vboxGlobalNATNetworks'>
		<table style='width: 100%; margin-left:auto; margin-right:auto;' class='vboxInvisible'>
			<tr style='vertical-align:top'>
				<td>
					<div class='vboxBordered' style='height: 280px'>
						<table style='width:100%; border-spacing: 0px;' class='vboxList vboxHover'>
							<thead>
								<tr>
                                    <th style='width: 140px; padding-left: 4px;text-align:left' class='translate'>Active</th>
                                    <th style='text-align:left' class='translate'>Name</th>
                                </tr>
							</thead>
							<tbody id='vboxSettingsGlobalNATNetList'>
								<tr><td>asdf</td><td>asdf</td></tr>
							</tbody>
						</table>
					</div>
				</td>
				<td style='width: 1%; padding: 4px;' id='vboxSettingsGlobalNATNetToolbar'></td>
			</tr>
		</table>
</div>
<div id='vboxGlobalHostNetworking'>
	<table style='width: 100%; margin-left:auto; margin-right:auto;' class='vboxInvisible'>
		<tr style='vertical-align:top'>
			<td >
				<ul id='vboxSettingsGlobalNetList' class='vboxBordered vboxList vboxHover' style='width: 100%; margin-top: 0px;'>
					<li>interface</li>
				</ul>
			</td>
			<td style='width: 1%; padding: 4px;' id='vboxSettingsGlobalNetToolbar'></td>
		</tr>
	</table>
</div>

<!--  Edit Host Networking Properties Dialog -->
<div id='vboxSettingsGlobalNetEditDialog' style='display: none'>

	<div id='vboxSettingsGlobalNetEdit' class='vboxTabbed'>
		<ul>
			<li><a href="#vboxSettingsGlobalNetEditAdapter"><span class='translate'>Adapter</span></a></li>
			<li><a href="#vboxSettingsGlobalNetEditDHCP"><span class='translate'>DHCP Server</span></a></li>		
		</ul>
		<div id="vboxSettingsGlobalNetEditAdapter" class="vboxDialogContent vboxTabContent">
			<table class="vboxSettingsTable">
				<tr>
					<th><span class='translate'>IPv4 Address:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetIPv4' /></td>
				</tr>
				<tr>
					<th><span class='translate'>IPv4 Network Mask:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetIPv4Mask' /></td>
				</tr>
				<tr>
					<th><span class='translate'>IPv6 Address:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetIPv6' /></td>
				</tr>
				<tr>
					<th><span class='translate'>IPv6 Network Mask Length:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetIPv6Mask' /></td>
				</tr>
			</table>
		</div>
		<div id="vboxSettingsGlobalNetEditDHCP" class='vboxDialogContent vboxTabContent'>
			<table class="vboxSettingsTable">
				<tr>
					<td colspan='2'><label><input type='checkbox' class='vboxCheckbox vboxEnablerCheckbox' id='vboxSettingsGlobalNetDHCPEnabled' /> <span class='translate'>Enable Server</span></label></td>
				</tr>
				<tr>
					<th><span class='translate'>Server Address:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetServerAddress' /></td>
				</tr>
				<tr>
					<th><span class='translate'>Server Mask:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetServerMask' /></td>
				</tr>
				<tr>
					<th><span class='translate'>Lower Address Bound:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetLower' /></td>
				</tr>
				<tr>
					<th><span class='translate'>Upper Address Bound:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNetUpper' /></td>
				</tr>
			</table>
		</div>
	</div>
</div>


<!--  Edit NAT NET Networking Properties Dialog -->
<div id='vboxSettingsGlobalNATNetworkEditDialog' style='display: none'>


	<div class='vboxDialogContent'>
			<table class="vboxSettingsTable">
				<tr>
					<td colspan='2'><label><input type='checkbox' class='vboxCheckbox vboxEnablerCheckbox' id='vboxSettingsGlobalNATNetEnabled' /> <span class='translate'>Enable Network</span></label></td>
				</tr>
				<tr>
					<th><span class='translate'>Network Name:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNATNetName' style='width:200px' /></td>
				</tr>
				<tr>
					<th><span class='translate'>Network CIDR:</span></th>
					<td><input type='text' class='vboxText' id='vboxSettingsGlobalNATNetNetwork' style='width:200px' /></td>
				</tr>
				<tr>
					<th><span class='translate'>Network Options:</span></th>
					<td><label><input type='checkbox' class='vboxCheckbox' id='vboxSettingsGlobalNATNetDHCP' /> <span class='translate vboxEnablerListen'>Supports DHCP</span></label></td>
				</tr>
				<tr>
					<th></th>
					<td><label><input type='checkbox' class='vboxCheckbox vboxEnablerTrigger' id='vboxSettingsGlobalNATNetIPv6' /> <span class='translate vboxEnablerListen'>Supports IPv6</span></label></td>
				</tr>
				<tr>
					<th></th>
					<td><label><input type='checkbox' class='vboxCheckbox' id='vboxSettingsGlobalNATNetIPv6Route' /> <span class='translate vboxEnablerListen'>Advertise Default IPv6 Route</span></label></td>
				</tr>
				<tr>
					<th></th>
					<td><input type='button' class='vboxButton' id='vboxSettingsGlobalNATNetRules' value='Port Forwarding' /></td>
				</tr>
			</table>
		</div>
</div>




<script type='text/javascript'>

/* Build Host interface Toolbar */

var sButtons = new Array(

	{
		'name' : 'addNet',
		'label' : 'Add host-only network',
		'icon' : 'add_host_iface',
		'enabled' : function () { return true; },
		'click' : function () {

			var refreshInterfaces = function(){
				var l = new vboxLoader();
				l.add('hostOnlyInterfacesGet',function(d){$('#vboxSettingsDialog').data('vboxHostOnlyInterfaces',d.responseData);});
				l.onLoad = function(){
					vboxSettingsGlobalNetworkAddAdpaters();
					vboxVMDataMediator.refreshVMData('host');
				};
				l.run();				
			};
			
			var l = new vboxLoader();
			l.add('hostOnlyInterfaceCreate',function(d){

				if(d && d.responseData && d.responseData.progress) {
					vboxProgress({'progress':d.responseData.progress,'persist':d.persist},function(){
						$('#vboxSettingsGlobalNetList').html('<li><img src="images/spinner.gif" /></li>');
						setTimeout(refreshInterfaces,2000);
					},null,trans('Add host-only network','UIGlobalSettingsNetwork'),'',true);
				}
				
			});

			l.run();

		}
	},

	{
		'name' : 'delNet',
		'label' : 'Remove host-only network',
		'icon' : 'remove_host_iface',
		'enabled' : function (item) { return ($(item).data('interface')); },
		'click' : function () {

			var item = $('#vboxSettingsGlobalNetList').children('li.vboxListItemSelected').first();
			
			var buttons = {};
			buttons[trans('OK','QIMessageBox')] = function() {

				var dialog = this;
				var item = $('#vboxSettingsGlobalNetList').children('li.vboxListItemSelected').first();

				var l = new vboxLoader();
				l.add('hostOnlyInterfaceRemove',function(d){

					if(d && d.responseData && d.responseData.progress) {
						vboxProgress({'progress':d.responseData.progress,'persist':d.persist},function(){
							var l2 = new vboxLoader();
							l2.add('hostOnlyInterfacesGet',function(d){$('#vboxSettingsDialog').data('vboxHostOnlyInterfaces',d.responseData);});
							l2.onLoad = function(){
								vboxSettingsGlobalNetworkAddAdpaters();
								vboxVMDataMediator.refreshVMData('host');
							};
							l2.run();
						},null,trans('Remove host-only network','UIGlobalSettingsNetwork'),'',true);
					}
					
				},{'id':$(item).data('interface').id});

				l.onLoad = function(){$(dialog).empty().remove();};
				l.run();
			};
			vboxConfirm(trans("<p>Deleting this host-only network will remove " +
			           "the host-only interface this network is based on. Do you want to " +
			           "remove the (host-only network) interface <nobr><b>%1</b>?</nobr></p>" +
			           "<p><b>Note:</b> this interface may be in use by one or more " +
			           "virtual network adapters belonging to one of your VMs. " +
			           "After it is removed, these adapters will no longer be usable until " +
			           "you correct their settings by either choosing a different interface " +
			           "name or a different adapter attachment type.</p>",'UIMessageCenter').replace('%1',$(item).data('interface').name),buttons);	
		}
	},
	{
		'name' : 'editNet',
		'label' : 'Edit host-only network',
		'icon' : 'guesttools',
		'enabled' : function (item) { return ($(item).data('interface')); },
		'click' : function () {
			vboxSettingsGlobalNetEditDialog();
		}
	},{
		name : 'refreshNet',
		'label' : 'Refresh',
		'language_context': 'UIVMLogViewer',
		'icon' : 'refresh',
		click: function() {
			var l = new vboxLoader();
			l.add('hostOnlyInterfacesGet',function(d){$('#vboxSettingsDialog').data('vboxHostOnlyInterfaces',d.responseData);});
			l.onLoad = function(){
				vboxSettingsGlobalNetworkAddAdpaters();
			};
			l.run();				
		}
	}
);

var netToolbar = new vboxToolbarSmall({buttons: sButtons, language_context: 'UIGlobalSettingsNetwork'});
netToolbar.renderTo('vboxSettingsGlobalNetToolbar');

$('#vboxSettingsGlobalNetList').on('select',function(e,i){
	netToolbar.update(i);
});


/* Build nat network Toolbar */

var sButtons = new Array(

	{
		'name' : 'addNet',
		'label' : 'Add NAT network',
		'icon' : 'add_host_iface',
		'click' : function () {

			// Elect name...
			var netNameTpl = 'NatNetwork';
			var number = 1;
			var netName = netNameTpl + number++;
			
			while($('#vboxSettingsGlobalNATNetList').find('td:contains("'+netName+'")').length) {
				netName = netNameTpl + number++;
			}
			vboxSettingsGlobalNATNetworksAddNet({'enabled':false,'networkName':netName,'portForwardRules4':[],'portForwardRules6':[]});
			

		}
	},

	{
		'name' : 'delNet',
		'label' : 'Remove NAT network',
		'icon' : 'remove_host_iface',
		'enabled' : function (item) { return (item); },
		'click' : function () {

			var item = $('#vboxSettingsGlobalNATNetList').children('tr.vboxListItemSelected').first();
			
			var buttons = {};
			buttons[trans('OK','QIMessageBox')] = function() {

				$(item).remove();
				$('#vboxSettingsGlobalNATNetList').trigger('select', null);
				$(this).empty().remove();
			};
			vboxConfirm(trans("<p>Deleting this host-only network will remove " +
			           "the host-only interface this network is based on. Do you want to " +
			           "remove the (host-only network) interface <nobr><b>%1</b>?</nobr></p>" +
			           "<p><b>Note:</b> this interface may be in use by one or more " +
			           "virtual network adapters belonging to one of your VMs. " +
			           "After it is removed, these adapters will no longer be usable until " +
			           "you correct their settings by either choosing a different interface " +
			           "name or a different adapter attachment type.</p>",'UIMessageCenter').replace('%1',$(item).data('NATNetwork').networkName),buttons);	
		}
	},
	{
		'name' : 'editNet',
		'label' : 'Edit NAT network',
		'icon' : 'guesttools',
		'enabled' : function (item) { return (item); },
		'click' : function () {
			vboxSettingsGlobalNATNetworkEditDialog();
		}
	},{
		name : 'refreshNet',
		'label' : 'Refresh',
		'language_context': 'UIVMLogViewer',
		'icon' : 'refresh',
		click: function() {
			var l = new vboxLoader();
			l.add('vboxNATNetworksGet',function(d){$('#vboxSettingsDialog').data('vboxNATNetworks',d.responseData);});
			l.onLoad = function(){
				vboxSettingsGlobalNATNetworksAdd();
			};
			l.run();				
		}
	}
);

var natNetToolbar = new vboxToolbarSmall({buttons: sButtons, language_context: 'UIGlobalSettingsNetwork'});
natNetToolbar.renderTo('vboxSettingsGlobalNATNetToolbar');

$('#vboxSettingsGlobalNATNetList').on('select',function(e,i){
	natNetToolbar.update(i);
});

/*
 *
 * Function to fill network adapters
 * 
 */
function vboxSettingsGlobalNetworkAddAdpater(n) {

	// If the adapter exists, don't add it
	var exists = false;
	$('#vboxSettingsGlobalNetList').children('li').each(function(){
		if($(this).data('interface').id == n.id) {
			exists = true;
			return false;
		}
	});

	if(exists) return;
	
	$('<li />').attr({'class':'vboxListItem'}).html($('<div />').text(n.name).html()).hoverClass('vboxHover').data('interface',n).click(function(){
		$(this).parent().children('li.vboxListItemSelected').removeClass('vboxListItemSelected').addClass('vboxListItem');
		$(this).addClass('vboxListItemSelected').removeClass('vboxListItem');
		$('#vboxSettingsGlobalNetList').trigger('select',this);
	}).appendTo($('#vboxSettingsGlobalNetList'));
	
}

/*
 * 
 * Fill network adapters
 *
 */
function vboxSettingsGlobalNetworkAddAdpaters() {
	$('#vboxSettingsGlobalNetList').children().remove();
	var nics = $('#vboxSettingsDialog').data('vboxHostOnlyInterfaces').networkInterfaces;
	for(var i = 0; i < nics.length; i++) {
		vboxSettingsGlobalNetworkAddAdpater(nics[i]);
	}
	$('#vboxSettingsGlobalNetList').trigger('select',null);
}
vboxSettingsGlobalNetworkAddAdpaters();

/*
 * 
 * FIll nat networks
 */
function vboxSettingsGlobalNATNetworksAdd() {
	var nets = $('#vboxSettingsDialog').data('vboxNATNetworks');
	$('#vboxSettingsGlobalNATNetList').empty();
	for(var i = 0; i < nets.length; i++) {
		nets[i].orig_networkName = nets[i].networkName;
		vboxSettingsGlobalNATNetworksAddNet(nets[i]);
	}
	$('#vboxSettingsGlobalNATNetList').trigger('select',null);
}

function vboxSettingsGlobalNATNetworksAddNet(net) {

	$('<tr />').data({'NATNetwork':net}).hoverClass('vboxHover').addClass('vboxListItem').append(
		$('<td />').append(
				$('<input />').attr({'type':'checkbox'}).click(function(){
					$(this).closest('tr').data('NATNetwork').enabled = this.checked;		
					$(this).closest('tr').data('NATNetwork')._modified = true;
					}).prop('checked', net.enabled)
				
			).click(function(){
				$(this).parent().parent().children('tr.vboxListItemSelected').removeClass('vboxListItemSelected').addClass('vboxListItem');
				$(this).parent().addClass('vboxListItemSelected').removeClass('vboxListItem');
				$('#vboxSettingsGlobalNATNetList').trigger('select',this);
		})
	).append(
		$('<td />').html($('<div />').html(net.networkName).text()).click(function(){
			$(this).parent().parent().children('tr.vboxListItemSelected').removeClass('vboxListItemSelected').addClass('vboxListItem');
			$(this).parent().addClass('vboxListItemSelected').removeClass('vboxListItem');
			$('#vboxSettingsGlobalNATNetList').trigger('select',this);
		})
	).appendTo($('#vboxSettingsGlobalNATNetList'));

}

vboxSettingsGlobalNATNetworksAdd();

/*
 *
 * Edit Network Interface Dialog 
 *
 */
vboxInitDisplay('vboxSettingsGlobalNetEditDialog','UIGlobalSettingsNetworkDetails');

var buttons = {};
buttons[trans('OK','QIMessageBox')] = function(){

	var nic = $('#vboxSettingsGlobalNetList').children('li.vboxListItemSelected').first().data('interface');
	
	nic.IPAddress = $('#vboxSettingsGlobalNetIPv4').val();
	nic.networkMask = $('#vboxSettingsGlobalNetIPv4Mask').val();
	nic.IPV6Address = $('#vboxSettingsGlobalNetIPv6').val();
	nic.IPV6NetworkMaskPrefixLength = $('#vboxSettingsGlobalNetIPv6Mask').val();
	nic.dhcpServer = {};
	nic.dhcpServer.networkName = nic.networkName;
	nic.dhcpServer.enabled = $('#vboxSettingsGlobalNetDHCPEnabled').prop('checked');
	nic.dhcpServer.IPAddress = $('#vboxSettingsGlobalNetServerAddress').val();
	nic.dhcpServer.networkMask = $('#vboxSettingsGlobalNetServerMask').val();
	nic.dhcpServer.lowerIP = $('#vboxSettingsGlobalNetLower').val();
	nic.dhcpServer.upperIP = $('#vboxSettingsGlobalNetUpper').val();

	$('#vboxSettingsGlobalNetList').children('li.vboxListItemSelected').first().data('interface',nic);
	
	$(this).dialog("close");
};
buttons[trans('Cancel','QIMessageBox')] = function(){$(this).dialog("close");};
$('#vboxSettingsGlobalNetEditDialog').dialog({'buttons':buttons,'width':500,'modal':true,'autoOpen':false,'dialogClass':'vboxDialogContent','title':'<img src="images/vbox/nw_16px.png" class="vboxDialogTitleIcon" /> ' +trans('Host-only Network Details','UIGlobalSettingsNetworkDetails')});


function vboxSettingsGlobalNetEditDialog() {

	var nic = $('#vboxSettingsGlobalNetList').children('li.vboxListItemSelected').first().data('interface');

	// Set Form Values
	$('#vboxSettingsGlobalNetIPv4').val(nic.IPAddress);
	$('#vboxSettingsGlobalNetIPv4Mask').val(nic.networkMask);

	if(nic.IPV6Supported) {
		$('#vboxSettingsGlobalNetIPv6').prop('disabled',false).val(nic.IPV6Address).closest('tr').find('span').removeClass('vboxDisabled');
		$('#vboxSettingsGlobalNetIPv6Mask').prop('disabled',false).val(nic.IPV6NetworkMaskPrefixLength).closest('tr').find('span').removeClass('vboxDisabled');
	} else {
		$('#vboxSettingsGlobalNetIPv6').prop('disabled',true).val('').closest('tr').find('span').addClass('vboxDisabled');
		$('#vboxSettingsGlobalNetIPv6Mask').prop('disabled',true).val('').closest('tr').find('span').addClass('vboxDisabled');
	}

	if(nic.dhcpServer && nic.dhcpServer.networkName) {
		$('#vboxSettingsGlobalNetServerAddress').val(nic.dhcpServer.IPAddress);
		$('#vboxSettingsGlobalNetServerMask').val(nic.dhcpServer.networkMask);
		$('#vboxSettingsGlobalNetLower').val(nic.dhcpServer.lowerIP);
		$('#vboxSettingsGlobalNetUpper').val(nic.dhcpServer.upperIP);
	} else {
		$('#vboxSettingsGlobalNetServerAddress').val('');
		$('#vboxSettingsGlobalNetServerMask').val('');
		$('#vboxSettingsGlobalNetLower').val('');
		$('#vboxSettingsGlobalNetUpper').val('');
	}

	
	$('#vboxSettingsGlobalNetEdit').tabs('option','active',0);
	$('#vboxSettingsGlobalNetDHCPEnabled').trigger('click');

	if(nic.dhcpServer && nic.dhcpServer.enabled && !$('#vboxSettingsGlobalNetDHCPEnabled').prop('checked')) {
		$('#vboxSettingsGlobalNetDHCPEnabled').trigger('click');
	} else if(nic.dhcpServer && !nic.dhcpServer.enabled && $('#vboxSettingsGlobalNetDHCPEnabled').prop('checked')) {
		$('#vboxSettingsGlobalNetDHCPEnabled').trigger('click');
	}

	$('#vboxSettingsGlobalNetEditDialog').dialog('open');

}

/*
*
* Edit NAT Network Interface Dialog 
*
*/
vboxInitDisplay('vboxSettingsGlobalNATNetworkEditDialog', 'UIGlobalSettingsNetworkDetailsNAT');

var buttons = {};
buttons[trans('OK','QIMessageBox')] = function(){

	var net = $('#vboxSettingsGlobalNATNetList').children('tr.vboxListItemSelected').first().data('NATNetwork');
	
	// Get Form Values
	net.enabled = $('#vboxSettingsGlobalNATNetEnabled').prop('checked');
	net.networkName = $('#vboxSettingsGlobalNATNetName').val();
	net.network = $('#vboxSettingsGlobalNATNetNetwork').val();
	net.needDhcpServer = $('#vboxSettingsGlobalNATNetDHCP').prop('checked');
	net.IPv6Enabled = $('#vboxSettingsGlobalNATNetIPv6').prop('checked');
	net.advertiseDefaultIPv6RouteEnabled = $('#vboxSettingsGlobalNATNetIPv6Route').prop('checked');
	net._modified = true;

	$('#vboxSettingsGlobalNATNetList').children('tr.vboxListItemSelected').first().data('NATNetwork',net).find('input').prop('checked', net.enabled);
	
	$(this).dialog("close");
};
buttons[trans('Cancel','QIMessageBox')] = function(){$(this).dialog("close");};
$('#vboxSettingsGlobalNATNetworkEditDialog').dialog({'buttons':buttons,'width':500,'modal':true,'autoOpen':false,'dialogClass':'vboxDialogContent','title':'<img src="images/vbox/nw_16px.png" class="vboxDialogTitleIcon" /> ' +trans('Host-only Network Details','UIGlobalSettingsNetworkDetails')});
$('#vboxSettingsGlobalNATNetIPv6').on('enable',function() {
	if(this.checked) {
		$('#vboxSettingsGlobalNATNetIPv6Route').prop('disabled', false).siblings().removeClass('vboxDisabled');	
	} else {
		$('#vboxSettingsGlobalNATNetIPv6Route').prop('disabled', true).siblings().addClass('vboxDisabled');
	}
}).on('click',function(){
	$(this).trigger('enable');
});

function vboxSettingsGlobalNATNetworkEditDialog() {

	var net = $('#vboxSettingsGlobalNATNetList').children('tr.vboxListItemSelected').first().data('NATNetwork');
	
	// Set Form Values
	$('#vboxSettingsGlobalNATNetEnabled').prop('checked', net.enabled);
	$('#vboxSettingsGlobalNATNetName').val(net.networkName);
	$('#vboxSettingsGlobalNATNetNetwork').val(net.network);
	$('#vboxSettingsGlobalNATNetDHCP').prop('checked', net.needDhcpServer)
	$('#vboxSettingsGlobalNATNetIPv6').prop('checked', net.IPv6Enabled)
	$('#vboxSettingsGlobalNATNetIPv6Route').prop('checked', net.advertiseDefaultIPv6RouteEnabled)

	$('#vboxSettingsGlobalNATNetEnabled').triggerHandler('click');
	$('#vboxSettingsGlobalNATNetIPv6').triggerHandler('click');
	
	$('#vboxSettingsGlobalNATNetRules').val(trans('Port Forwarding', 'UIGlobalSettingsNetworkDetailsNAT')).off('click').on('click',function(){
		vboxSettingsGlobalNetworkNatPortForwardingDialog(net, $('#vboxSettingsGlobalNATNetList').children('tr.vboxListItemSelected').first());	
	});
	
	$('#vboxSettingsGlobalNATNetworkEditDialog').dialog('open');

}


function vboxSettingsGlobalNetworkNatPortForwardingDialog(net, row) {
	
	if($('#vboxSettingsGlobalNetworkNatPortForwardingDialog')[0])
		$('#vboxSettingsGlobalNetworkNatPortForwardingDialog').empty().remove();
	
	var l = new vboxLoader();
	l.addFileToDOM("panes/settingsGlobalNetworkNATPortForwarding.html");
	l.onLoad = function(){
		
		vboxSettingsGlobalNetworkNatPortForwardingInit(net.portForwardRules4, false);
		vboxSettingsGlobalNetworkNatPortForwardingInit(net.portForwardRules6, true);
		
		var buttons = {};
		buttons[trans('OK','QIMessageBox')] = function(){
			
			// wrap ips in []
			var wrapIp = function(ip) {
				ip = ip.trim();
				if(!ip) return '[]';
				if(ip[0] != '[') $ip = '[' + ip;
				if(ip[ip.length-1] != ']') ip += ']';
				return ip;
			}
			
			// Get rules
			var none=0;
			do {
				var ruleNum = 4 + (none*2);
				var rules = $('#vboxSettingsGlobalNetworkNatPortForwardingListIPv'+ruleNum).children('tr');
				var rulesToPass = new Array();
				for(var i = 0; i < rules.length; i++) {
					if($(rules[i]).data('vboxRule')[3] == 0 || $(rules[i]).data('vboxRule')[5] == 0) {
						vboxAlert(trans("The current port forwarding rules are not valid. " +
					               "None of the host or guest port values may be set to zero.",'UIMessageCenter'));
						return;
					}
					
					rulesToPass[i] = $(rules[i]).data('vboxRule');
					
					rulesToPass[i][0] = rulesToPass[i][0].replace(':','');
					rulesToPass[i][2] = wrapIp(rulesToPass[i][2]);
					rulesToPass[i][4] = wrapIp(rulesToPass[i][4]);
					
					rulesToPass[i] = rulesToPass[i].join(':');
				}
				$('#vboxSettingsGlobalNATNetList').children('tr.vboxListItemSelected').first().data('NATNetwork')['portForwardRules'+ruleNum] = rulesToPass;
				
			} while(none++ < 1)
				
			$(this).trigger('close').empty().remove();
			
			
		};
		buttons[trans('Cancel','QIMessageBox')] = function(){
			$(this).trigger('close').empty().remove();
		};
		
		vboxInitDisplay($('#vboxSettingsGlobalNetworkNatPortForwardingDialog'), 'UIPortForwardingModel');
		
		$('#vboxSettingsGlobalNetworkNatPortForwardingDialog').tabs();
		
		$('#vboxSettingsGlobalNetworkNatPortForwardingDialog').dialog({'closeOnEscape':true,'width':840,'height':400,'buttons':buttons,'modal':true,'autoOpen':true,'dialogClass':'vboxDialogContent','title':'<img src="images/vbox/nw_16px.png" class="vboxDialogTitleIcon" /> ' + trans('Port Forwarding Rules','UIMachineSettingsPortForwardingDlg')}).on("dialogbeforeclose",function(){
	    	$(this).parent().find('span:contains("'+trans('Cancel','QIMessageBox')+'")').trigger('click');
	    });
		

	};
	l.run();
	
}

/* 
 * 
 * Update Data onSave() 
 * 
 */
$('#vboxSettingsDialog').on('save',function(){

	$('#vboxSettingsDialog').data('vboxHostOnlyInterfaces').networkInterfaces = new Array();

	$('#vboxSettingsGlobalNetList').children('li').each(function(){
		$('#vboxSettingsDialog').data('vboxHostOnlyInterfaces').networkInterfaces.push($(this).data('interface'));		
	});
	
	var nets = [];
	
	$('#vboxSettingsGlobalNATNetList').children('tr').each(function(){
		nets.push($(this).data('NATNetwork'));
	});
	$('#vboxSettingsDialog').data('vboxNATNetworks',nets);
	
});

/*
 * Remove dialogs on close
 */
$('#vboxSettingsDialog').on('close',function(){
	$('#vboxSettingsGlobalNetEditDialog').remove();
	$('#vboxSettingsGlobalNATNetworkEditDialog').remove();
});
 
</script>